import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  resolve: {
    // 路径别名配置
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    // 服务端口设置
    port: 5174,
    /**
     * 跨域代理
     * PS:
     *    1. 浏览器 network 中查看不是显示的目标域名
     *    2. server.proxy 只有在本地开发生效，上线是不生效的。上线处理可以：
     *      1. nginx 做代理
     *      2. 让后端开启 cors
     */
    proxy: {
      /**
       * PS:
       *    1. 请求地址需要以当前网页域名地址做为基准：http://localhost:5173
       *    2. 请求路径，需要以 /admin 开头
       *
       *    http://localhost:5173/admin/base/open/captcha  => http://localhost:8001/admin/base/open/captcha
       *    http://localhost:5173/admin/abcd  => http://localhost:8001/admin/abcd
       */
      '/admin': {
        target: 'http://localhost:8001', // 目标域名
        changeOrigin: true // 是否在代理到目标域名时，修改请求头中的 host 字段
        // rewrite: (path) => newPath, // 路径重写
      },

      /**
       * http://localhost:5173/dev/admin/base/open/captcha => http://localhost:8001/admin/base/open/captcha
       */
      '/dev': {
        target: 'http://localhost:8001',
        changeOrigin: true,
        rewrite: (path) => path.replace('/dev', '')
      },

      '/map': {
        target: 'https://apis.map.qq.com',
        changeOrigin: true,
        rewrite: (path) => path.replace('/map', '')
      }
    }
  }
})
